/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.yournamehere.client.vistas;

/**
 *
 * @author gabriel
 */

import org.yournamehere.client.datasource.UsuarioDataSource;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.types.TopOperatorAppearance;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.FilterBuilder;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.events.CellClickEvent;
import com.smartgwt.client.widgets.grid.events.CellClickHandler;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.Layout;
import com.smartgwt.client.widgets.layout.VLayout;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.yournamehere.client.dto.UserDTO;
import org.yournamehere.client.services.AdminRPC;
import org.yournamehere.client.services.AdminRPCAsync;




//aca va el otro import..el GridRecod, eso para no usar los dataSources
import org.yournamehere.client.registrosgrid.GridRegistroUser;





public class VistaUsuario extends Layout {
    
    
    
    Label titulo;
    DataSource usuarioSource;
    ListGrid listaElementos;
    DynamicForm formUsuarios;
    IButton saveButton;
    /*IButton deleteButton;
    IButton cleanButton;
    IButton filterButton;
    IButton updateButton;
    IButton listarButton;*/
    HLayout buttonPanel;
    /*FilterBuilder filtro;*/
    VLayout panelPrincipal;
    
    public VistaUsuario(){
    
        
        titulo = new Label();
        titulo.setHeight(10);
        titulo.setWidth100();
        
        listaElementos = new ListGrid();
        listaElementos.setWidth(500);
        listaElementos.setHeight(250);
        listaElementos.setAutoFetchData(true);

        
        formUsuarios = new DynamicForm();
        formUsuarios.setShowTitlesWithErrorMessages(false);
        formUsuarios.setNumCols(1);
        formUsuarios.setGroupTitle("Nuevo Usuario");
        formUsuarios.setIsGroup(true);
        formUsuarios.setHeight("200");
         
        titulo.setContents("Listado de Usuarios");

        
        saveButton = new IButton("Guardar Nuevo");
        saveButton.setWidth(100);

        /*
        deleteButton = new IButton("Borrar Seleccionado");
        deleteButton.setWidth(100);

        cleanButton = new IButton("Limpiar Campos");
        cleanButton.setWidth(100);

        filterButton = new IButton("Filtrar");

        listarButton = new IButton("Actualizar Lista");
        listarButton.setWidth(100);

        updateButton = new IButton("Modificar Seleccionado");
        updateButton.setWidth(137);

         */
        buttonPanel = new HLayout();
        buttonPanel.setHeight(22);

        /*
        filtro = new FilterBuilder();
        filtro.setTopOperatorAppearance(TopOperatorAppearance.RADIO);

         
         */
        panelPrincipal = new VLayout(15);
        
        
        construirVista();
   
        
        
    
    }
    
    private void construirVista() {
       
       //usuarioRecord
        
       usuarioSource = UsuarioDataSource.getInstance(); 
       listaElementos.setDataSource(usuarioSource); 
       
       
       formUsuarios.setDataSource(usuarioSource);
        
       buttonPanel.addMember(saveButton); 
        
       panelPrincipal.addMember(titulo); 
       panelPrincipal.addMember(listaElementos);
       panelPrincipal.addMember(formUsuarios);
       panelPrincipal.addMember(buttonPanel);
       this.addChild( panelPrincipal); 
       panelPrincipal.draw(); 
       
       
       //hacemos la llamada AJAX para cargar la lista de usuarios
       {
            AdminRPCAsync service = GWT.create(AdminRPC.class);
            service.listarUsuarios(new AsyncCallback<List<UserDTO>>() {

                @Override
                public void onFailure(Throwable caught) {
                    //...
                    Window.alert("No se pudo traer la lista de usuarios!!!!");
                }

                @Override
                public void onSuccess(List<UserDTO> result) {
                    for (UserDTO usuario : result) {
                        usuarioSource.addData(usuario.toUsuarioRecord());
                    }
                }
            });
        }
       
       
       
    }

        
    
    
}
